package com.zhongnan.demo6;

public class RunnableImpl implements Runnable {
    // 电影票
    private int tiket = 100;

    Object obj = new Object();

    /**
     * 创建线程卖票
     */
    @Override
    public void run() {
        while (tiket > 0) {
            /**
             * 同步代码块
             *     synchronized (锁对象) {
             *          可能出现线程安全的代码
             *     }
             *
             */
            synchronized (obj) {
                if (tiket > 0) {
                    System.out.println(Thread.currentThread().getName() + "-->第" + (tiket) + "张票");
                    // 有票卖一张
                    tiket--;
                }
            }
        }
    }
    /**
     * 同步方法
     */
    public synchronized  void payTiket() {
        if (tiket > 0) {
            System.out.println(Thread.currentThread().getName() + "-->第" + (tiket) + "张票");
            // 有票卖一张
            tiket--;
        }
    }
}
